In a memory system including a nonvolatile memory such as a NAND type flash memory, a programming/erasing cycle (a P/E cycle) is repeated, and thus, a memory cell of the nonvolatile memory becomes physically exhausted. Accordingly, a probability of occurrence of a read error increases. In order to cope with the read error, a writing process is widely performed by adding an error correction code to data in advance, and a restoring process is performed by error correction at the time of performing the reading.
Examples of a system employing error correction code include a code rate variable system. According to such a system, a code rate is changed, and thus, it is possible to change an error correcting capability. When the code rate variable system is applied to the memory system, the error correcting capability is strengthened as the code rate decreases. However, the capacity of storing user data decreases as the code rate decreases.